package com.example.tomatotodo.model;

import com.google.gson.annotations.SerializedName;

import java.io.Serializable;
import java.time.LocalDateTime;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class TodoRecordSyncDTO implements Serializable {
    private static final long serialVersionUID = 1L;

    @SerializedName("clientCreatedAt")
    private LocalDateTime clientCreatedAt;  // 客户端本地创建时间

    @SerializedName("startTime")
    private LocalDateTime startTime;        // 开始时间

    @SerializedName("endTime")
    private LocalDateTime endTime;          // 结束时间，如果endTime<startTime，则表示是不计时模式

    @SerializedName("finished")
    private Boolean finished = false;       // 是否完成，默认false

    @SerializedName("actualFocusSeconds")
    private Integer actualFocusSeconds = 0; // 本次实际完成的总专注秒数，默认0

    @SerializedName("actualRestSeconds")
    private Integer actualRestSeconds = 0;  // 实际休息秒数，默认0

    // 添加任务关联字段
    @SerializedName("taskTitle")
    private String taskTitle;               // 关联的任务标题

    @SerializedName("taskType")
    private String taskType;                // 关联的任务类型

    @SerializedName("taskId")
    private String taskId;                  // 关联的任务ID（如果后续需要）

    /**
     * 获取有效的时间字段用于过滤和统计
     * 优先使用clientCreatedAt，如果为null则使用startTime<br>
     * 解决后端返回的记录数据中没有clientCreatedAt的情况
     *
     * @return 有效的时间字段
     */
    public LocalDateTime getEffectiveTime() {
        if (clientCreatedAt != null) {
            return clientCreatedAt;
        }
        return startTime;
    }

    @Override
    public String toString() {
        return "TodoRecordSyncDTO{" +
                "clientCreatedAt=" + clientCreatedAt +
                ", startTime=" + startTime +
                ", endTime=" + endTime +
                ", finished=" + finished +
                ", actualFocusSeconds=" + actualFocusSeconds +
                ", actualRestSeconds=" + actualRestSeconds +
                ", taskTitle='" + taskTitle + '\'' +
                ", taskType='" + taskType + '\'' +
                ", taskId='" + taskId + '\'' +
                '}';
    }
}
